Introduction

On s’attache ici a reproduire la cartographie du paysage politique suisse realisee par Hermann et Lautheld (2003), dans leur Atlas der politischen Landschaften : Ein weltanschauliches Portrat der Schweiz.

A partir de 184 votations tenues entre 1982 et 2002, les auteurs montrent des graphiquement des differences persistantes de mentalite dans les cantons et les communes de Suisse, ce qu’ils nomment “l’espace des visions du monde”. En effet, davantage que des conflits politiques, ces votations permettent de saisir les lignes de fracture dans une societe : pour une societe liberale ou conservatrice, pour une protection des travailleurs ou des entreprises, pour une societe ecologique ou technocratique.

Aussi, sont dans un premier temps analysees ces votations afin d’en degager ces lignes de fracture. Les auteurs ont recours pour cela a une analyse factorielle, avec l’idee que si l’on trouve un certain nombre de votations avec une repartition similaire des votes favorables, ils representent une ligne de conflit politique ou un facteur. Tout autre groupe de votes qui ont un degre eleve d’accord entre eux, mais qui sont incompatibles avec les facteurs deja trouves, donne un facteur supplementaire. On arrive ainsi par cette analyse factorielle a identifier les lignes de fracture societales.

Ensuite, avec une methode a base d’estimation de densite par les noyaux explicitee par la suite, on peut realiser une cartographie factorielle de ces resultats.

Mise en forme des donnees

Les paquets R suivants vont nous etre utiles :

require(FactoMineR)
require(factoextra)
require(stringi)
require(psych)
require(REdaS)
require(knitr)
require(reshape2)
require(spatialEco)
require(sp)
require(raster)
require(RColorBrewer)
require(tidyverse)

On commence par recuperer les donnees des votations qui peuvent etre extraites depuis : https://www.bfs.admin.ch/bfs/fr/home/statistiques/politique/votations.assetdetail.3362356.html

Apres mise en forme correcte, on charge les donnees :

data <- read.csv("votations.csv", header = TRUE, sep = ";", encoding = "latin1")

On fait un peu de mise en forme afin de pouvoir s’y retrouver plus facilement :

rownames(data) <- make.names(data$Commune, unique=TRUE)

colnames(data) <- stri_sub(colnames(data),2) # enleve les X des noms de colonne

data <- data[, -1]

data <- data[,order(as.Date(substr(colnames(data),1, 10), 
                            format="%d.%m.%Y"))] # trie les colonnes par date

Notre tableau de donnees ressemble a cela :

head(data[,1:5])
##                  14.06.1981.Egalité.entre.hommes.et.femmes
## X.Saxeten                                             54.5
## X.Alpthal                                             18.4
## X.Le.Bémont..JU.                                      79.3
## X.Oberdorf..BL.                                       54.5
## X.Mellikon                                            69.4
## X.Liesberg                                            49.0
##                  14.06.1981.Protection.des.consommateurs
## X.Saxeten                                           45.5
## X.Alpthal                                           20.8
## X.Le.Bémont..JU.                                    81.0
## X.Oberdorf..BL.                                     61.5
## X.Mellikon                                          70.3
## X.Liesberg                                          61.0
##                  29.11.1981.Régime.financier 06.06.1982.Code.pénal.suisse
## X.Saxeten                               60.0                         66.7
## X.Alpthal                               53.8                         55.6
## X.Le.Bémont..JU.                        40.7                         55.9
## X.Oberdorf..BL.                         58.2                         45.7
## X.Mellikon                              58.7                         47.7
## X.Liesberg                              50.4                         58.8
##                  06.06.1982.Loi.sur.les.étrangers
## X.Saxeten                                    31.3
## X.Alpthal                                    40.7
## X.Le.Bémont..JU.                             55.9
## X.Oberdorf..BL.                              26.6
## X.Mellikon                                   26.7
## X.Liesberg                                   44.3

Alors maintenant on effectue une partition de maniere a ne garder que les votations effectivement considerees par Hermann et Leuthold (2003), comme les colonnes sont maintenant triees par date, c’est tres simple :

data_old <- data[,4:187]

Preparation de l’analyse factorielle

Pour commencer, explorons un peu nos donnees : dans un premier temps, les votes sont compares par paires.

Prenons par exemple le vote sur l’adhesion de l’ONU (2002) et le vote sur la facilitation de la naturalisation des jeunes etrangers (1994) :

plot(data$`03.03.2002.Adhésion.de.la.Suisse.à.l.ONU`, 
     data$`12.06.1994.Naturalisation.facilitée.pour.les.jeunes.étrangers`, 
     xlab = "Adhesion a l'ONU (2002)", 
     ylab = "Naturalisation facilitee pour les jeunes etrangers (1994)", 
     xlim=c(0,100), ylim=c(0,100))

On voit qu’il existe un lien positif entre le oui pour l’adhesion a l’ONU et pour “faciliter la naturalisation des jeunes etrangers”. En regle generale, cela veut dire que plus une commune est favorable a la “facilitation de la naturalisation”, plus elle est favorable a une adhesion a l’ONU.

Prenons un autre exemple, l’approbation de la facilitation de la naturalisation des jeunes etrangers (1994) et l’approbation du projet contre l’immigration clandestine (1996) :

plot(data$`01.12.1996.Contre.l.immigration.clandestine`, 
     data$`12.06.1994.Naturalisation.facilitée.pour.les.jeunes.étrangers`, 
     xlab = "Contre l'immigration clandestine (1996)", 
     ylab = "Naturalisation facilitee pour les jeunes etrangers (1994)", 
     xlim=c(0,100), ylim=c(0,100))

Ici, en revanche, la figure montre une correlation negative : plus l’approbation de “la naturalisation facilitee” est elevee, plus l’approbation de la “limitation de la proportion d’etrangers” est faible.

Voyons un dernier cas de figure avec la comparaison de l’interdiction de l’experimentation animale (1992) et la facilitation de la naturalisation des jeunes etrangers (1994) :

plot(data$`16.02.1992.Initiative.contre.l.expérimentation.animale`, 
     data$`12.06.1994.Naturalisation.facilitée.pour.les.jeunes.étrangers`, 
     xlab = "Initiative contre l'experimentation animale (1992)", 
     ylab = "Naturalisation facilitee pour les jeunes etrangers (1994)", 
     xlim=c(0,100), ylim=c(0,100))

La figure montre qu’au niveau des communes, il n’y a pas de lien particulier entre l’approbation de l’interdiction de l’experimentation animale et l’approbation de la facilitation de la naturalisation.

Plus generalement, on compare les 184 votations deux a deux a l’aide d’une matrice de correlation :

c <-cor(data_old)
head(c[,1:5])
##                                                  06.06.1982.Code.pénal.suisse
## 06.06.1982.Code.pénal.suisse                                       1.00000000
## 06.06.1982.Loi.sur.les.étrangers                                   0.20664185
## 28.11.1982.Surveillance.des.prix..contre.projet.                   0.30427676
## 28.11.1982.Surveillance.des.prix..initiative.                     -0.33097805
## 27.02.1983.Article.sur.l.énergie                                   0.16478319
## 27.02.1983.Droits.de.douane.sur.les.carburants                     0.07317908
##                                                  06.06.1982.Loi.sur.les.étrangers
## 06.06.1982.Code.pénal.suisse                                           0.20664185
## 06.06.1982.Loi.sur.les.étrangers                                       1.00000000
## 28.11.1982.Surveillance.des.prix..contre.projet.                       0.06871332
## 28.11.1982.Surveillance.des.prix..initiative.                          0.01776461
## 27.02.1983.Article.sur.l.énergie                                       0.34229314
## 27.02.1983.Droits.de.douane.sur.les.carburants                         0.27545081
##                                                  28.11.1982.Surveillance.des.prix..contre.projet.
## 06.06.1982.Code.pénal.suisse                                                           0.30427676
## 06.06.1982.Loi.sur.les.étrangers                                                       0.06871332
## 28.11.1982.Surveillance.des.prix..contre.projet.                                       1.00000000
## 28.11.1982.Surveillance.des.prix..initiative.                                         -0.48935179
## 27.02.1983.Article.sur.l.énergie                                                       0.01670866
## 27.02.1983.Droits.de.douane.sur.les.carburants                                         0.01346510
##                                                  28.11.1982.Surveillance.des.prix..initiative.
## 06.06.1982.Code.pénal.suisse                                                       -0.33097805
## 06.06.1982.Loi.sur.les.étrangers                                                    0.01776461
## 28.11.1982.Surveillance.des.prix..contre.projet.                                   -0.48935179
## 28.11.1982.Surveillance.des.prix..initiative.                                       1.00000000
## 27.02.1983.Article.sur.l.énergie                                                    0.20548598
## 27.02.1983.Droits.de.douane.sur.les.carburants                                      0.02888380
##                                                  27.02.1983.Article.sur.l.énergie
## 06.06.1982.Code.pénal.suisse                                           0.16478319
## 06.06.1982.Loi.sur.les.étrangers                                       0.34229314
## 28.11.1982.Surveillance.des.prix..contre.projet.                       0.01670866
## 28.11.1982.Surveillance.des.prix..initiative.                          0.20548598
## 27.02.1983.Article.sur.l.énergie                                       1.00000000
## 27.02.1983.Droits.de.douane.sur.les.carburants                         0.56160256

On regarde ensuite l’indice de KMO, que l’on souhaite le plus proche de 1 pour une bonne ACP.

kmo <- KMO(data_old)

kmo$MSA
## [1] 0.9752057

Farpait.

On fait ensuite le test de sphericite de Bartlett pour verifier que les variables ne sont pas issues d’une population dont la matrice est l’identite, ce qui traduirait une absence totale de correlation ente les variables, et dans ce cas une analyse des composantes principales n’aurait donc pas d’interet.

bart_spher(data_old)
##  Bartlett's Test of Sphericity
## 
## Call: bart_spher(x = data_old)
## 
##      X2 = 576556.352
##      df = 16836
## p-value < 2.22e-16

Avec un p-value telle que celle-ci, on peut rejeter l’hypothese (nulle) selon laquelle notre matrice des correlations est determinee a partir d’une population dont la matrice est identite. Ainsi, une ACP semble etre pertinente.

Analyse en composantes principales

ATTENTION !!! A ce stade, nous avons suivi une analyse scientifique classique où nous passions “naïvement” par differentes etapes. Dans l’etape suivante, la calibration de l’ACP a ete realisee de maniere a obtenir les resultats les plus proches de ceux recoltes par Hermann et Leuthold (2003) dans l’idee de pouvoir realiser une cartographie qui soit similaire par la suite. Les resultats ne sont donc pas les meilleurs ni les plus adaptes, ce sont ceux qui nous permettent de poursuivre plus facilement notre interpretation de la methode employee par les auteurs originaux. La plupart des commentaires “politiques” sont des reprises des originaux

On utilise le package “psych” avec une rotation varimax.

acp <- principal(data_old, nfactors = 3, rotate = "varimax")
summary(acp)
## 
## Factor analysis with Call: principal(r = data_old, nfactors = 3, rotate = "varimax")
## 
## Test of the hypothesis that 3 factors are sufficient.
## The degrees of freedom for the model is 16287  and the objective function was  131.79 
## The number of observations was  2224  with Chi Square =  284508  with prob <  0 
## 
## The root mean square of the residuals (RMSA) is  0.07
p <- print(acp)
round(p$Vaccounted,2)
##                         RC2   RC1   RC3
## SS loadings           35.62 31.20 30.25
## Proportion Var         0.19  0.17  0.16
## Cumulative Var         0.19  0.36  0.53
## Proportion Explained   0.37  0.32  0.31
## Cumulative Proportion  0.37  0.69  1.00
plot(100*acp$values/sum(acp$values),
     xlim = c(1,8), ylim = c(0,30), 
     xlab = "Composante", ylab = "% de variance expliquee", 
     type = "b", las=1)

Avec les trois premieres composantes, on est seulement a 52,69% de variance expliquee. Il s’agit pourtant de l’ACP pour laquelle les resultats coïncident le mieux avec ceux du livre.

On doit a present regarder les differentes composantes obtenues :

kable(acp$loadings[,c(3,1,2)], digits=4)
RC3 RC2 RC1
06.06.1982.Code.pénal.suisse -0.4566 -0.0090 0.2005
06.06.1982.Loi.sur.les.étrangers 0.0983 -0.2099 0.6556
28.11.1982.Surveillance.des.prix..contre.projet. -0.5297 0.0903 0.0602
28.11.1982.Surveillance.des.prix..initiative. 0.6931 0.3170 -0.0006
27.02.1983.Article.sur.l.énergie 0.2520 0.1377 0.5048
27.02.1983.Droits.de.douane.sur.les.carburants 0.2330 -0.2549 0.2245
04.12.1983.Droit.de.la.nationalité -0.0127 0.1792 0.6979
04.12.1983.Naturalisation.facilitée 0.0690 0.0942 0.5329
26.02.1984.Initiative.pour.le.service.civil 0.6619 0.2607 0.3827
26.02.1984.Redevance.sur.les.poids.lourds 0.0717 0.7706 0.0505
26.02.1984.Vignette.autoroutière -0.1619 0.7417 -0.2089
20.05.1984.Contre.le.bradage.du.sol.national -0.2791 0.6849 -0.1721
20.05.1984.Initiative.sur.les.banques 0.0418 0.6297 -0.0512
23.09.1984.Approvisionnement.en.énergie.respectueux.de.l.environnement 0.5918 0.1266 0.0757
23.09.1984.Initiative.contre.l.énergie.nucléaire 0.5802 0.0989 0.0084
02.12.1984.Aide.aux.victimes.de.la.violence -0.1581 0.7044 0.2737
02.12.1984.Article.sur.la.radio.et.télévision 0.0977 0.3821 0.5990
02.12.1984.Protection.de.la.maternité 0.7311 0.0016 0.2920
10.03.1985.Extension.de.la.durée.des.vacances 0.8091 0.1205 0.0974
10.03.1985.Subsides.de.formation -0.5848 0.1014 0.4075
10.03.1985.Subventionnement.de.la.santé.publique -0.5066 0.2274 0.5452
10.03.1985.Subventionnement.de.l.instruction.primaire -0.4843 0.3333 0.5300
09.06.1985.Imposition.des.boissons.distillées -0.1886 0.4615 0.4710
09.06.1985.Part.cantonal.aux.droits.de.timbre -0.2798 0.5064 0.4404
09.06.1985.Pour.le.droit.à.la.vie 0.0849 -0.1696 -0.5445
09.06.1985.Suppression.de.l.aide.aux.producteurs.cultivant.le.blé 0.3420 -0.1369 0.6143
22.09.1985.Garantie.contre.les.risques.à.l.innovation 0.7371 -0.0416 0.3187
22.09.1985.Harmonisation.du.début.de.l.année.scolaire 0.5224 -0.3251 0.3131
22.09.1985.Nouveau.droit.matrimonial 0.6643 0.0485 0.5389
01.12.1985.Suppression.de.la.vivisection -0.0430 0.7161 -0.0154
16.03.1986.Adhésion.de.la.Suisse.à.l.ONU 0.5258 0.2487 0.5475
28.09.1986.Arrêté.sur.l.économie.sucrière -0.2289 -0.6171 0.0245
28.09.1986.En.faveur.de.la.culture..contre.projet. 0.0800 0.2901 0.1422
28.09.1986.En.faveur.de.la.culture..initiative. 0.6783 0.0164 0.2444
28.09.1986.Formation.professionnelle.et.recyclage 0.6374 0.1144 0.0302
07.12.1986.Imposition.du.trafic.des.poids.lourds 0.2595 0.7342 0.1852
07.12.1986.Protection.des.locataires 0.5070 0.3755 0.2470
05.04.1987.Initiatives.avec.contre.projet 0.5178 0.3648 0.4599
05.04.1987.Loi.sur.l.asile -0.3895 0.0158 -0.0089
05.04.1987.Loi.sur.les.étrangers -0.2570 0.0530 0.1966
05.04.1987.Référendum.en.matière.de.dépenses.militaires 0.7183 0.2402 -0.0074
06.12.1987.Initiative.pour.la.protection.des.marais 0.4526 0.4188 0.0468
06.12.1987.Loi.sur.l.assurance.maladie 0.5402 0.3796 0.1417
06.12.1987.Projet.RAIL.2000 0.3725 0.2157 0.3344
12.06.1988.Abaissement.de.l.âge.de.la.retraite 0.8330 0.1076 0.0538
12.06.1988.Politique.coordonnée.des.transports 0.0754 0.8007 0.0423
04.12.1988.Contre.la.spéculation.foncière 0.4853 0.4211 0.1024
04.12.1988.Limitation.de.l.immigration 0.1869 0.3455 -0.3543
04.12.1988.Réduction.de.la.durée.du.travail 0.8063 0.2101 0.1304
04.06.1989.Initiative.en.faveur.des.petits.paysans 0.2207 0.7718 -0.0704
26.11.1989.Initiative..pro.vitesse.130.100. 0.3760 -0.7469 0.2079
26.11.1989.Suisse.sans.armée 0.6935 0.1413 0.2429
01.04.1990.Arrêté.sur.la.viticulture 0.0004 -0.6399 0.2291
01.04.1990.District.du.Knonau.sans.autoroutes -0.0900 0.7715 -0.2421
01.04.1990.Initiative.contre.une.autoroute.entre.Bienne.et.Soleure -0.1951 0.7952 -0.2605
01.04.1990.Initiative.contre.une.autoroute.entre.Morat.et.Yverdon -0.1409 0.8132 -0.2415
01.04.1990.Loi.sur.l.organisation.judiciaire -0.3407 -0.2516 0.4594
01.04.1990.Stabilisation.du.réseau.routier 0.0254 0.7812 -0.2091
23.09.1990.Abandon.de.l.énergie.atomique 0.6881 0.1760 0.0721
23.09.1990.Article.sur.l.énergie 0.3981 0.4228 0.2562
23.09.1990.Loi.sur.la.circulation.routière -0.0112 -0.7262 0.4156
23.09.1990.Moratoire.nucléaire 0.5704 0.3231 0.0272
03.03.1991.Droit.de.vote.à.18.ans 0.2538 -0.0236 0.4452
03.03.1991.Encouragement.des.transports.publics 0.1887 0.7311 0.0963
02.06.1991.Code.pénal.militaire -0.3554 0.4187 0.1321
02.06.1991.Introduction.de.la.TVA -0.1136 0.6485 0.1933
16.02.1992.Initiative.contre.l.expérimentation.animale -0.1227 0.7694 -0.0398
16.02.1992.Initiative.des.caisses.maladie 0.2619 0.4845 -0.3964
17.05.1992.Adhésion.aux.institutions.de.Bretton.Woods 0.2563 -0.1901 0.8099
17.05.1992.Initiative..pour.la.sauvegarde.de.nos.eaux. 0.2406 0.7183 0.1709
17.05.1992.Loi.sur.la.protection.des.eaux 0.0056 0.6755 0.3235
17.05.1992.Participation.aux.institutions.de.Bretton.Woods 0.2386 -0.1676 0.8113
17.05.1992.Révision.du.droit.pénal.en.matière.sexuelle 0.2044 0.5397 0.5048
17.05.1992.Service.civil.pour.les.objecteurs.de.conscience 0.1002 0.7086 0.2351
17.05.1992.Techniques.de.reproduction.et.manipulation.génétique 0.0055 0.6091 0.4089
27.09.1992.Arrêté.sur.le.transit.alpin 0.3122 -0.2157 0.5706
27.09.1992.Loi.sur.le.droit.foncier.rural 0.0110 0.6241 -0.0790
27.09.1992.Loi.sur.les.coûts.d.infrastructure 0.3046 0.3011 0.6127
27.09.1992.Loi.sur.les.droits.de.timbre -0.0117 -0.1231 0.6738
27.09.1992.Loi.sur.les.indemnités.parlementaires 0.3585 0.1859 0.6560
27.09.1992.Loi.sur.les.rapports.entre.les.conseils 0.3406 0.0967 0.7889
06.12.1992.Adhésion.à.l.EEE 0.3740 -0.4665 0.7188
07.03.1993.Abolition.de.la.vivisection 0.1680 0.6829 -0.1049
07.03.1993.Autorisation.des.maisons.de.jeu 0.0445 -0.0374 0.3535
07.03.1993.Droits.d.entrée.sur.les.carburants -0.4473 0.6980 0.0250
06.06.1993.40.places.d.armes.ça.suffit 0.8016 0.0058 0.2762
06.06.1993.Initiative.contre.de.nouveaux.avions.de.combat 0.7910 0.0418 0.2495
26.09.1993.Abus.de.l.usage.d.armes 0.2107 0.1364 0.6004
26.09.1993.Initiative.1er.août 0.2422 0.4203 0.1011
26.09.1993.Mesures..concernant.l.assurance.maladie -0.2920 0.1393 0.4522
26.09.1993.Mesures.en.matière.d.assurance.chômage -0.2761 0.0170 0.4731
26.09.1993.Rattachement.du.district.de.Laufon.à.Bâle.Campagne 0.3320 -0.3421 0.4952
28.11.1993.Impôts.de.consommation.spéciaux -0.2403 0.4189 0.6602
28.11.1993.Introduction.de.la.TVA -0.2990 0.3495 0.6467
28.11.1993.Pourcentage.de.la.TVA.pour.l.AVS -0.2156 0.5332 0.4641
28.11.1993.Prévention.des.problèmes.liés.à.l.alcool 0.0766 0.6901 -0.0078
28.11.1993.Prévention.des.problèmes.liés.au.tabac 0.0893 0.6941 0.0253
28.11.1993.TVA..taux.de.6.5.. -0.2861 0.5031 0.4756
20.02.1994.Initiative.pour.la.protection.des.Alpes 0.0157 0.7906 -0.2140
20.02.1994.Loi.sur.la.navigation.aérienne 0.0797 -0.2159 0.5766
20.02.1994.Prorogation.de.la.redevance.sur.les.poids.lourds -0.1149 0.8853 0.0310
20.02.1994.Prorogation.de.la.vignette.autoroutière -0.2445 0.8438 0.0165
20.02.1994.Taxe.poids.lourds.liée.aux.prestations -0.0046 0.8745 0.0675
12.06.1994.Article.sur.l.encouragement.de.la.culture 0.5651 0.0529 0.6230
12.06.1994.Casques.bleus 0.2316 -0.0973 0.8269
12.06.1994.Naturalisation.facilitée.pour.les.jeunes.étrangers 0.1944 -0.1259 0.8589
25.09.1994.Loi.contre.le.racisme 0.1928 0.2504 0.7342
25.09.1994.Suppression.de.la.réduction.du.prix.du.blé.indigène -0.1479 0.4338 0.6755
04.12.1994.Initiative..pour.une.saine.assurance.maladie. 0.7742 -0.1028 0.1199
04.12.1994.Loi.sur.l.assurance.maladie 0.6644 -0.2487 0.4138
04.12.1994.Mesures.de.contrainte.concernant.les.étrangers -0.5146 0.4769 -0.1250
12.03.1995.Article.sur.l.agriculture -0.1108 -0.7086 0.2667
12.03.1995.Economie.laitière -0.0566 -0.7067 0.2416
12.03.1995.Frein.aux.dépenses -0.3154 -0.0265 0.5211
12.03.1995.Loi.sur.l.agriculture -0.0094 -0.6983 0.2582
25.06.1995.10e.révision.de.l.AVS -0.7244 0.2057 0.3182
25.06.1995.Acquisition.d.immeubles.par.des.étrangers 0.2922 -0.4101 0.6789
25.06.1995.Extension.de.l.AVS.et.de.l.AI 0.7919 0.1232 0.0387
10.03.1996.Article.sur.les.langues 0.3816 -0.0731 0.5169
10.03.1996.Equipement.personnel.des.militaires -0.1327 0.4657 0.4605
10.03.1996.Places.de.stationnement.près.des.gares -0.2241 0.5134 0.2020
10.03.1996.Rachat.d.eau.de.vie.et.d.appareils.à.distiller -0.0392 0.2940 0.7151
10.03.1996.Transfert.de.la.commune.de.Vellerat.au.canton.du.Jura 0.0747 0.0762 0.4878
09.06.1996.Article.sur.l.agriculture 0.1120 0.6928 0.2047
09.06.1996.Organisation.du.gouvernement.et.de.l.administration 0.4380 -0.1688 0.7164
01.12.1996.Contre.l.immigration.clandestine -0.3083 0.3220 -0.6692
01.12.1996.Loi.sur.le.travail -0.5563 0.3017 0.3270
08.06.1997.Initiative.contre.l.exportation.de.matériel.de.guerre 0.6394 0.0651 0.3185
08.06.1997.Négociations.d.adhésion.à.l.UE..que.le.peuple.décide 0.0529 0.1825 -0.5913
08.06.1997.Suppression.de.la.régale.des.poudres -0.1686 0.4459 0.5031
28.09.1997.Financement.de.l.assurance.chômage -0.7139 0.4044 -0.1030
28.09.1997.Initiative..Jeunesse.sans.drogue. -0.0906 -0.4080 -0.3414
07.06.1998.Initiative.contre.une.police.fouineuse 0.5560 0.2903 -0.0721
07.06.1998.Initiative.pour.la.protection.génétique -0.1684 0.6871 -0.4175
07.06.1998.Objectif.budgétaire.2001 -0.6617 0.3718 0.2207
27.09.1998.Initiative.contre.le.relèvement.de.l.âge.de.la.retraite 0.8571 -0.1504 0.1116
27.09.1998.Initiative.des.petits.paysans 0.2762 0.7274 -0.1256
27.09.1998.Redevance.sur.les.poids.lourds.liée.aux.prestations 0.3055 0.6115 0.3962
29.11.1998.Article.céréalier 0.1695 0.3835 0.6214
29.11.1998.Financement.de.l.infrastructure.des.transports.publics 0.4214 0.3231 0.3718
29.11.1998.Initiative.Droleg -0.0798 0.6533 -0.1047
29.11.1998.Loi.sur.le.travail -0.4000 0.5503 0.3212
07.02.1999.Eligibilité.au.Conseil.fédéral -0.3842 0.4537 0.4443
07.02.1999.Initiative..propriété.du.logement.pour.tous. -0.2915 -0.0513 -0.0324
07.02.1999.Loi.sur.l.aménagement.du.territoire 0.0959 -0.5054 0.3178
07.02.1999.Médecine.de.la.transplantation 0.0986 -0.0403 0.6313
18.04.1999.Nouvelle.Constitution.fédérale 0.4644 -0.1622 0.7232
13.06.1999.Loi.sur.l.asile -0.4849 0.5702 0.1284
13.06.1999.Loi.sur.l.assurance.invalidité -0.0608 -0.1436 0.3954
13.06.1999.Loi.sur.l.assurance.maternité 0.6436 -0.4008 0.5403
13.06.1999.Mesures.dans.le.domaine.de.l.asile.et.des.étrangers -0.5146 0.5909 0.0429
13.06.1999.Prescription.d.héroïne -0.0243 0.6834 0.3724
12.03.2000.Initiative.des.quotas 0.5768 -0.0285 0.4014
12.03.2000.Initiative.pour.la.réduction.du.trafic 0.1739 0.7397 0.1815
12.03.2000.Initiative.pour.une.démocratie.directe.plus.rapide 0.0782 0.2315 -0.1641
12.03.2000.Procréation.respectant.la.dignité.humaine -0.0616 0.6266 -0.4713
12.03.2000.Réforme.de.la.justice 0.0316 0.3224 0.6996
21.05.2000.Accords.bilatéraux.avec.l.UE 0.1485 -0.2411 0.7753
24.09.2000.Initiative.solaire 0.2542 0.5166 0.1830
24.09.2000.Redevance.incitative.en.faveur.de.l.environnement 0.0273 0.6842 0.2208
24.09.2000.Redevance.pour.l.encouragement.des.énergies.renouvelables 0.1577 0.4062 0.3802
24.09.2000.Référendum.constructif 0.5682 0.2222 -0.1747
24.09.2000.Réglement.de.l.immigration -0.2491 0.3471 -0.6782
26.11.2000.Assouplissement.de.l.AVS 0.8046 -0.2888 0.2432
26.11.2000.Initiative..pour.des.coûts.hospitaliers.moins.élevés. 0.4480 -0.0107 -0.3106
26.11.2000.Loi.sur.le.personnel.de.la.Confédération -0.6939 0.3998 0.1993
26.11.2000.Redistribution.des.dépenses.militaires 0.7496 -0.2433 0.4336
26.11.2000.Retraite.à.la.carte.dès.62.ans 0.7985 -0.3305 0.1850
04.03.2001.Initiative..pour.des.médicaments.à.moindre.prix. -0.0617 0.6913 -0.1627
04.03.2001.Oui.à.l.Europe. 0.4548 -0.3312 0.6715
04.03.2001.Rues.pour.tous 0.1597 0.5775 0.3167
10.06.2001.Loi.sur.l.armée..armement -0.1454 0.1971 0.6162
10.06.2001.Loi.sur.l.armée..coopération.en.matière.d.instruction -0.1394 0.1346 0.6716
10.06.2001.Suppression.de.l.article.sur.les.évêchés 0.1128 0.2524 0.1452
02.12.2001.Frein.à.l.endettement -0.6180 0.1768 0.1698
02.12.2001.Impôt.sur.les.gains.en.capital 0.4150 0.1194 0.0446
02.12.2001.Service.civil.volontaire.pour.la.paix 0.7075 -0.1247 0.4440
02.12.2001.Suisse.sans.armée 0.6725 -0.1099 0.4337
02.12.2001.Taxer.l.énergie.et.non.le.travail 0.3893 0.4354 0.1675
03.03.2002.Adhésion.de.la.Suisse.à.l.ONU 0.2264 -0.0679 0.8118
03.03.2002.Durée.du.travail.réduite 0.7799 -0.1227 0.3529
02.06.2002.Pour.la.mère.et.l.enfant -0.0268 -0.0239 -0.6235
02.06.2002.Régime.du.délai 0.1078 -0.0377 0.7017
22.09.2002.Initiative.sur.l.or -0.1160 0.1211 -0.5423

Gauche-droite

L’opposition “gauche-droite” correspond au a la troiseme composante (RC3) qui, selon l’analyse factorielle, est le mieux representee par les 20 votes du tableau ci-dessous. Les votes sont ranges en fonction de l’intensite avec laquelle ils determinent la ligne de fracture.

p <- print(ICLUST.sort(acp$loadings))
resultRC3 <-melt(data.frame(p$content[129:149],p$RC3[129:149]))
resultRC3 <- resultRC3[,-2]
colnames(resultRC3) <- c("Votation","loading")
kable(resultRC3)
Votation loading
27.09.1998.Initiative.contre.le.relèvement.de.l.âge.de.la.retraite 0.86
12.06.1988.Abaissement.de.l.âge.de.la.retraite 0.83
10.03.1985.Extension.de.la.durée.des.vacances 0.81
04.12.1988.Réduction.de.la.durée.du.travail 0.81
26.11.2000.Assouplissement.de.l.AVS 0.80
06.06.1993.40.places.d.armes.ça.suffit 0.80
26.11.2000.Retraite.à.la.carte.dès.62.ans 0.80
25.06.1995.Extension.de.l.AVS.et.de.l.AI 0.79
06.06.1993.Initiative.contre.de.nouveaux.avions.de.combat 0.79
03.03.2002.Durée.du.travail.réduite 0.78
04.12.1994.Initiative..pour.une.saine.assurance.maladie. 0.77
26.11.2000.Redistribution.des.dépenses.militaires 0.75
22.09.1985.Garantie.contre.les.risques.à.l.innovation 0.74
02.12.1984.Protection.de.la.maternité 0.73
25.06.1995.10e.révision.de.l.AVS -0.72
05.04.1987.Référendum.en.matière.de.dépenses.militaires 0.72
28.09.1997.Financement.de.l.assurance.chômage -0.71
02.12.2001.Service.civil.volontaire.pour.la.paix 0.71
26.11.2000.Loi.sur.le.personnel.de.la.Confédération -0.69
26.11.1989.Suisse.sans.armée 0.69
28.11.1982.Surveillance.des.prix..initiative. 0.69

Comme l’indique la liste, le premier conflit concerne principalement l’Etat-providence et la protection des travailleurs. D’un côte de la ligne de conflit, il y a une attitude qui cherche a ameliorer la situation des travailleurs et a elargir les services de l’Etat providence. De l’autre, il y a au contraire le souci de reduire les coûts de l’Etat-providence et de proteger les interets des employeurs.

Outre la politique sociale, un deuxieme groupe de themes est fortement represente dans le tableau. Il s’agit de propositions sur la politique de securite (par exemple, “Suisse sans armee” ou “40 places d’armes suffisent”). Lors des votations, ces sujets montrent un degre eleve d’accord avec les questions sociopolitiques. Il montre qu’une attitude “sociale” est generalement associee a une attitude “pacifiste”. D’autre part, les valeurs contraires coincident donc avec une attitude positive envers les autorites de securite, l’armee et la police.

Liberal-conservateur

Lorsque le debat sur l’Europe a commence en Suisse au debut des annees 1990, il est apparu que la societe ne pouvait pas seulement etre divisee entre la gauche et la droite. En ce qui concerne le vote sur l’Espace Economique Europeen de 1992, des coalitions se sont formees et ont rassemble des mouvements de gauche avec des mouvements de droite.

L’ACP confirme cette constatation : les propositions d’integration de la Suisse dans la communaute internationale (UE, ONU, Banque mondiale, etc.) ne se situent pas sur la ligne de conflit gauche-droite, mais forment un groupe independant. Le tableau ci-dessous montre les 25 votes qui decrivent le mieux cette deuxieme fracture (RC1).

resultRC1 <-melt(data.frame(p$content[71:95],p$RC1[71:95]))
resultRC1 <- resultRC1[,-2]
colnames(resultRC1) <- c("Votation","loading")
kable(resultRC1)
Votation loading
12.06.1994.Naturalisation.facilitée.pour.les.jeunes.étrangers 0.86
12.06.1994.Casques.bleus 0.83
03.03.2002.Adhésion.de.la.Suisse.à.l.ONU 0.81
17.05.1992.Participation.aux.institutions.de.Bretton.Woods 0.81
17.05.1992.Adhésion.aux.institutions.de.Bretton.Woods 0.81
27.09.1992.Loi.sur.les.rapports.entre.les.conseils 0.79
21.05.2000.Accords.bilatéraux.avec.l.UE 0.78
25.09.1994.Loi.contre.le.racisme 0.73
18.04.1999.Nouvelle.Constitution.fédérale 0.72
06.12.1992.Adhésion.à.l.EEE 0.72
09.06.1996.Organisation.du.gouvernement.et.de.l.administration 0.72
10.03.1996.Rachat.d.eau.de.vie.et.d.appareils.à.distiller 0.72
02.06.2002.Régime.du.délai 0.70
12.03.2000.Réforme.de.la.justice 0.70
04.12.1983.Droit.de.la.nationalité 0.70
25.06.1995.Acquisition.d.immeubles.par.des.étrangers 0.68
24.09.2000.Réglement.de.l.immigration -0.68
25.09.1994.Suppression.de.la.réduction.du.prix.du.blé.indigène 0.68
27.09.1992.Loi.sur.les.droits.de.timbre 0.67
10.06.2001.Loi.sur.l.armée..coopération.en.matière.d.instruction 0.67
04.03.2001.Oui.à.l.Europe. 0.67
01.12.1996.Contre.l.immigration.clandestine -0.67
28.11.1993.Impôts.de.consommation.spéciaux 0.66
27.09.1992.Loi.sur.les.indemnités.parlementaires 0.66
06.06.1982.Loi.sur.les.étrangers 0.66

La deuxieme ligne de conflit contient egalement les votations sur l’integration des etrangers, telles que la “naturalisation facilitee des jeunes etrangers” ou la “loi antiracisme”. Dans un certain sens, les propositions d’integration sont aussi des propositions d’ouverture, meme il ne s’agit que d’une ouverture a l’interieur. Le deuxieme conflit fondamental est donc un conflit entre cosmopolitisme et la fermeture des frontieres. Mais c’est aussi un conflit de modernisation et de preservation. Les propositions de modernisation ont un but. Simplifier les procedures, ameliorer les reglementations et les adapter aux exigences d’une societe en mutation. Les propositions de modernisation typiques sont la nouvelle Constitution federale, l’introduction de la TVA ou une reforme parlementaire.

La combinaison des deux groupes de questions sur la deuxieme ligne de clivage montre que quiconque prône l’ouverture du pays vise egalement la modernisation des institutions de l’Etat. D’autre part, ceux qui voient la necessite d’une plus grande fermeture des frontieres veulent surtout preserver la reglementation existante. Les auteurs se referent a l’attitude cosmopolitiste-moderne contre l’attitude de enfermement-preservation, ou plus simplement, liberale contre conservatrice.

Ecologisme vs technocratisme

Une une troisieme ligne de fracture distincte qui est communement associee a une opposition de gauche-droite est revelee : elle concerne la question de savoir comment evaluer l’interference humaine avec la nature. Dans ce contexte, le souci d’une approche prudente et holistique de la nature, oppose a sa maîtrise technique et son utilisation sont opposes. La liste des votes qui determinent ce troisieme conflit montre une large gamme thematique ; ce sont des votations sur le transport et la protection de l’environnement, mais aussi des votes sur l’agriculture, le bien-etre animal et le genie genetique.

resultRC2 <-melt(data.frame(p$content[1:20],p$RC2[1:20]))
resultRC2 <- resultRC2[,-2]
colnames(resultRC2) <- c("Votation","loading")
kable(resultRC2)
Votation loading
20.02.1994.Prorogation.de.la.redevance.sur.les.poids.lourds 0.89
20.02.1994.Taxe.poids.lourds.liée.aux.prestations 0.87
20.02.1994.Prorogation.de.la.vignette.autoroutière 0.84
01.04.1990.Initiative.contre.une.autoroute.entre.Morat.et.Yverdon 0.81
12.06.1988.Politique.coordonnée.des.transports 0.80
01.04.1990.Initiative.contre.une.autoroute.entre.Bienne.et.Soleure 0.80
20.02.1994.Initiative.pour.la.protection.des.Alpes 0.79
01.04.1990.Stabilisation.du.réseau.routier 0.78
04.06.1989.Initiative.en.faveur.des.petits.paysans 0.77
01.04.1990.District.du.Knonau.sans.autoroutes 0.77
26.02.1984.Redevance.sur.les.poids.lourds 0.77
16.02.1992.Initiative.contre.l.expérimentation.animale 0.77
26.11.1989.Initiative..pro.vitesse.130.100. -0.75
26.02.1984.Vignette.autoroutière 0.74
12.03.2000.Initiative.pour.la.réduction.du.trafic 0.74
07.12.1986.Imposition.du.trafic.des.poids.lourds 0.73
03.03.1991.Encouragement.des.transports.publics 0.73
27.09.1998.Initiative.des.petits.paysans 0.73
23.09.1990.Loi.sur.la.circulation.routière -0.73
17.05.1992.Initiative..pour.la.sauvegarde.de.nos.eaux. 0.72

“L’espace des visions du monde”

Les lignes de conflit politiques revelees par l’ACP donnent une idee precise des valeurs fondamentales divergentes en Suisse. Les conflits d’attitude fondamentaux qui existent dans la societe sont beaucoup plus divers que dans la politique institutionnelle, où les partis et leurs representants peuvent encore etre classes dans un large eventail de gauche a droite. Alors que le conflit entre une orientation libarale et une orientation conservatrice est devenu de plus en plus visible dans le paysage des partis au cours de la derniere decennie, le contraste entre l’ecologie et la technocratie en politique n’est guere considere comme une ligne de conflit independante. (NDE : ecrit en 2003, aujourd’hui, un peu plus)

L’espace tridimensionnel des visions du monde couvre les attitudes de base typiques de la Suisse. Bien que statistiquement parlant, les trois dimensions de l’espace pour les differences dans les resultats des votes soient a peu pres equivalentes, l’accent ne sera mis que sur les deux dimensions gauche-droite et liberal-conservateur.

Il y a d’abord des raisons pratiques a cela : une carte ne peut afficher qu’un seul plan etire entre deux dimensions. Cependant, il y a aussi une raison substantielle : le contraste entre ecologique et technocratique est avant tout un conflit entre la partie francaise et la partie allemande du pays et est moins significatif pour l’analyse intraregionale.

Cartographie

Coordonnees : dimensions

Maintenant que notre ACP a ete realisee et nos facteurs retenus, on attribue a chaque commune son score factoriel.

scores <- as.data.frame(acp$scores) 

head(scores)
##                         RC2        RC1        RC3
## X.Saxeten         0.8539639 -1.9880436  0.3111002
## X.Alpthal        -1.6226131 -3.6117403 -0.7833659
## X.Le.Bémont..JU. -1.1920217 -0.6486866  2.6048862
## X.Oberdorf..BL.   0.7357200 -0.5718280  0.1459617
## X.Mellikon        1.0859081 -0.6681187  0.8922702
## X.Liesberg        0.6650193 -1.1980120  0.9954138

De cette facon, on peut cartographier les communes suisses sur la base des votes qu’elles ont realisees dans notre espace a deux dimensions, RC1 pour l’axe y et -RC3 (on prend l’oppose de facon a avoir la gauche a gauche) pour l’axe x :

par(pty="s")
plot(-scores$RC3, scores$RC1, xlab = "", ylab = "", xaxt='n', yaxt="n", pch=10, cex=.3)
mtext('Droite', side=4, line=2, las=1)
mtext('Gauche', side=2, line=2, las=1)
mtext("Liberal", side =3, line=1)
mtext("Conservateur", side =1, line=1)

Poids : population

Maintenant que nous avons nos coordonnees spatiales, on veut attribuer un poids a ces entites afin de pouvoir realiser par la suite des estimations de surfaces de densite par noyaux.

On a recupere un fichier des communes suisses avec le nombre d’habitants, il s’agit maintenant de fusionner ces deux tableaux de donnees:

communes <- read.csv2("communes.csv", encoding = "latin1")
communes$Habitants <- as.numeric(gsub('![[:alnum:]]*[[:space:]]|[[:punct:]]', '', communes$Habitants))
communes$Commune  <- gsub('-', ' ', communes$Commune)

Les operations precedentes ont pas mal abîme les noms des communes, on realise donc un certain nombre de modifications textuelles :

scores$Commune <- row.names(scores)
scores$Commune <- stri_sub(scores$Commune,3)
scores$Commune <- gsub('\\.\\.', ' (', scores$Commune)
scores$Commune <- gsub('H\\.', 'H)', scores$Commune)
scores$Commune <- gsub('G\\.', 'G)', scores$Commune)
scores$Commune <- gsub('Z\\.', 'Z)', scores$Commune)
scores$Commune <- gsub('E\\.', 'E)', scores$Commune)
scores$Commune <- gsub('L\\.', 'L)', scores$Commune)
scores$Commune <- gsub('U\\.', 'U)', scores$Commune)
scores$Commune <- gsub('R\\.', 'R)', scores$Commune)
scores$Commune <- gsub('O\\.', 'O)', scores$Commune)
scores$Commune <- gsub('W\\.', 'W)', scores$Commune)
scores$Commune <- gsub('D\\.', 'D)', scores$Commune)
scores$Commune <- gsub('S\\.', 'S)', scores$Commune)
scores$Commune <- gsub('\\.', ' ', scores$Commune)
scores$Commune <- gsub('\\(Urne commune', '', scores$Commune)
scores$Commune <- gsub('St \\(', 'St\\. ', scores$Commune)
scores$Commune <- gsub('Biel Bienne', 'Biel/Bienne', scores$Commune)

On peut alors fusionner les deux fichiers :

scores <- merge(scores, communes, by= "Commune")

Et on garde ce qui est necessaire :

scores <- scores[,1:6]

Couleur : langue

L’analyse politique suisse est evidemment geolinguistique : on doit donc retrouver ces langues dans nos donnees. Pour cela on se sert du code geographique qui est fonction des cantons et districts.

scores$langue <- ""
scores$langue[scores$Code.commune <1720] <- "ALL"
scores$langue[scores$Code.commune <5400 & scores$Code.commune > 5000] <- "ITA" # TI
scores$langue[scores$Code.commune >5400 & scores$Code.commune < 5940] <- "FRA" # VD
scores$langue[scores$Code.commune >6400] <- "FRA" # JU GE NE
scores$langue[scores$Code.commune >1000 & scores$Code.commune < 1720] <- "ALL"
scores$langue[scores$Code.commune >2400 & scores$Code.commune < 4960] <- "ALL"
scores$langue[scores$Code.commune >2000 & scores$Code.commune < 2340] <- "FRA"
scores$langue[scores$Code.commune >6000 & scores$Code.commune < 6012] <- "ALL"
scores$langue[scores$Code.commune >6020 & scores$Code.commune < 6040] <- "FRA"
scores$langue[scores$Code.commune >6040 & scores$Code.commune < 6080] <- "ALL"
scores$langue[scores$Code.commune >6080 & scores$Code.commune < 6100] <- "FRA"
scores$langue[scores$Code.commune >6100 & scores$Code.commune < 6120] <- "ALL"
scores$langue[scores$Code.commune >6120 & scores$Code.commune < 6160] <- "FRA"
scores$langue[scores$Code.commune >6160 & scores$Code.commune < 6210] <- "ALL"
scores$langue[scores$Code.commune >6210 & scores$Code.commune < 6270] <- "FRA"
scores$langue[scores$Code.commune >6270 & scores$Code.commune < 6301] <- "ALL"

jurabernoisFRA <- c(681,683,687,431,432,433,690,434,691,692,694,435,723,696,437,700,724,438,701,450,716,726,715,703,441,704,442,706,443,449,707,444,445,711,713,446,717,448)
MoesaBernina <- c(3804,3837,3831,3805,3832,3821,3822,3808,3834,3835,3823,3810,3551,3561,3531,3792)

scores$langue[scores$Code.commune %in% jurabernoisFRA] <- "FRA"
scores$langue[scores$Code.commune %in% MoesaBernina] <- "ITA"

On peut alors attribuer les couleurs :

scores$Colour[scores$langue == "FRA"]="#FF3D00"
scores$Colour[scores$langue == "ALL"]="#5DE100"
scores$Colour[scores$langue == "ITA"]="#FFBC00"

Et visualiser le resultat intermediaire :

par(pty="s")
plot(-scores$RC3, scores$RC1, xlab = "", ylab = "", xaxt='n', yaxt="n", cex=sqrt(scores$Habitants/10000),pch=16, col=scores$Colour)
mtext('Droite', side=4, line=2, las=1)
mtext('Gauche', side=2, line=2, las=1)
mtext("Liberal", side =3, line=1)
mtext("Conservateur", side =1, line=1)
legend("bottomleft",col = c("#FF3D00","#5DE100","#FFBC00"), legend = c("FRA","ALL","ITA"),pch=16)

Ce resultat est en soit deja satisfaisant par bien des aspects. On veut toutefois reproduire le style “carte topographique” de l’original et on passe alors sur ArcGIS par commodite.

On exporte donc nos donnees afin de pouvoir les importer dans le SIG.

scores$RC3 <- -scores$RC3 # inversion des coordonn?es pour adaptation graphique logique
write.csv(scores, "scores.csv")
scores2 <- scores[,3:4]

Estimation d’une surface de densite par noyaux

On passe d’abord les donn?es data.frame en spatiales :

coordinates(scores) <- ~ RC3 + RC1

On a ensuite besoin de calculer le rayon optimal de recherche. Pour obtenir ce search radius (bandwith), on peut reprendre la formule de Silverman (1986) :

\(h = \left ( \frac{4\sigma ^{5}}{3n} \right )^{1/5} \approx 1.06\sigma n^{-1/5}\)

ou \(\sigma\) est l’ecart-type des distances entre les points et \(n\) le nombre d’observation.

Pour obtenir cet ecart-type, on fait un petit calcul :

# centres moyens
mc <- apply(scores2, 2, mean)
# standard distance
sd <- sqrt(sum((scores2[,1] - mc[1])^2 + (scores2[,2] - mc[2])^2) / nrow(scores2))
h <-  1.06*sd*(2162^(-0.2))

Ensuite, on peut utiliser la fonction de calcul de kde du package spatialEco

kde <- sp.kde(scores, y= scores$Habitants, bw = h*2, newdata = c(-5,5,-5,5), n= 1000)
## 
##  calculating weighted kde
plot(kde)

crs(kde) <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0" 

En réalité, ici 2*h est bien meilleur que h, du coup on va garder ça pour la visu.

Un peu d’ajustement graphique sur la couche obtenue, notamment l’ombrage (hillshade) qui donne un aspect carte topo.

slope <- terrain(kde, opt='slope')
aspect <- terrain(kde, opt='aspect')
hill <- hillShade(slope, aspect, 45, 315)
plot(hill, col=grey(0:100/100), legend=FALSE, main='Switzerland')

Afin de determiner les zones linguistiques, on cree des partitions de nos scores en fonction de la langue (ALL, FRA et ITA).

scoresFRA <- subset(scores, scores$langue == 'FRA')
scoresALL <- subset(scores, scores$langue == 'ALL')
scoresITA <- subset(scores, scores$langue == 'ITA')

On refait ensuite des KDE sur les points par langue de maniere a obtenir 3 nouveaux rasters.

kdeFRA <- sp.kde(scoresFRA, y= scoresFRA$Habitants, bw = h*2, newdata = c(-5,5,-5,5), n= 1000)
## 
##  calculating weighted kde
par(pty="s")
plot(kdeFRA, xlim=c(-5, 5), ylim=c(-5, 5), col = c("#F5A780","#F28E6e","#EF765D","#EC5e4b","#E9463A","#E62E28","#E41617"),legend=FALSE )

kdeALL <- sp.kde(scoresALL, y= scoresALL$Habitants, bw = h*2, newdata = c(-5,5,-5,5), n= 1000)
## 
##  calculating weighted kde
plot(kdeALL, xlim=c(-5, 5), ylim=c(-5, 5),col = c("#E8Ecb4","#C1DCA1","#9ACC8E","#74BC7C","#4DAC69","#269C56","#008c44"), legend=FALSE)

kdeITA <- sp.kde(scoresITA, y= scoresITA$Habitants, bw = h*2, newdata = c(-5,5,-5,5), n= 1000)
## 
##  calculating weighted kde
plot(kdeITA, xlim=c(-5, 5), ylim=c(-5, 5),col = c("#F4CD8E","#F7C074","#F2B058","#EC9C34"),legend=FALSE)
legend("bottomleft",col = c("#FF3D00","#5DE100","#FFBC00"), legend = c("FRA","ALL","ITA"),pch=16)

Pour une meilleure visualisation, on exporte ça pour QGIS :

values(kde)[values(kde) <0.01] <- NA

writeRaster(kde, "kde.tif", overwrite = TRUE)
writeRaster(kdeFRA, "kdeFRA.tif", overwrite = TRUE)
writeRaster(kdeALL, "kdeALL.tif", overwrite = TRUE)
writeRaster(kdeITA, "kdeITA.tif", overwrite = TRUE)

On visualise ça au mieux :

Zone francophone : Zone Germanophone Zone italophone